import { ElMessage } from 'element-plus'
import request from '@/config/axios'

// 定义页面笔记的数据接口
export interface PageNote {
  id?: number
  pageName: string
  title: string
  content: string
  createTime?: string
  updateTime?: string
}

// 定义查询参数接口
export interface PageNoteQuery {
  pageName?: string
  title?: string
  current: number
  pageSize: number
}

// 定义响应数据接口
export interface PageNoteResponse {
  total: number
  records: PageNote[]
}

class PageNoteModel {
  // 获取页面笔记列表
  async getPageNoteList(query: PageNoteQuery): Promise<PageNoteResponse> {
    try {
      // TODO: 替换为实际的 API 调用
      const response = await request.get({
        url : "/pageNote/list",
        params: query,
      })
      return response
    } catch (error) {
      ElMessage.error('获取页面笔记列表失败')
      throw error
    }
  }

  // 新增页面笔记
  async addPageNote(data: PageNote): Promise<void> {
    try {
      // TODO: 替换为实际的 API 调用
      await request.post({
        url : "/pageNote/save",
        data: data,
      })
      ElMessage.success('新增成功')
    } catch (error) {
      ElMessage.error('新增失败')
      throw error
    }
  }

  // 编辑页面笔记
  async updatePageNote(data: PageNote): Promise<void> {
    try {
      // TODO: 替换为实际的 API 调用
      await request.post({
        url : "/pageNote/updateById",
        data: data,
      })
      ElMessage.success('编辑成功')
    } catch (error) {
      ElMessage.error('编辑失败')
      throw error
    }
  }

  // 删除页面笔记
  async deletePageNote(id: number): Promise<void> {
    try {
      // TODO: 替换为实际的 API 调用
      await request.delete({
        url : "/pageNote/deleteById",
        params: {
          id: id,
        }
      })
      ElMessage.success('删除成功')
    } catch (error) {
      ElMessage.error('删除失败')
      throw error
    }
  }

  // 获取页面笔记详情
  async getPageNoteDetail(id: number): Promise<PageNote> {
    try {
      return request.get({
        url: "/pageNote/getById",
        params: {
          id: id,
        }
      })
    } catch (error) {
      ElMessage.error('获取详情失败')
      throw error
    }
  }
}

export const pageNoteModel = new PageNoteModel() 
